<?php
/**
 * Created by VISPHP 快速开发框架.
 * Author:乐清
 * email:804966813@qq.com
 * Date: 2019/2/17
 * Time: 14:09
 */

namespace app\admin\controller;


use app\admin\model\File;
use app\admin\model\Membercate;
use think\Session;
use app\admin\model\Member as user;
class Member extends Visphp
{
    public function index(){
        if (request()->isAjax()){
            $db=new \app\admin\model\Member();
            $catedb=new Membercate();
            $fdb=new File();
            $li=$db->order('create_time','asc')->select();
            foreach ($li as $k=>$v){
                $cid=$v['admin_cate_id'];
                $i=db('file')->where('id',$v['thumb'])->find();
                $c=$catedb->where('id',$cid)->find();
                $li[$k]['thumb_img']=$i['filepath'];
                $li[$k]['cate_n']=$c['name'];
            }
            return json($li);
        }
        return view();
    }
    public function delete()
    {
        $db=new \app\admin\model\Member();
        if($this->request->isAjax()) {
            $id = $this->request->has('id') ? $this->request->param('id', 0, 'intval') : 0;
            if($id == 1) {
                $this->error('网站所有者不能被删除');
            }
            if($id == Session::get('user')) {
                 $this->error('自己不能删除自己');
            }
            if(false == $db->where('id',$id)->delete()) {
                 $this->error('删除失败');
            } else {

                 $this->success('删除成功','admin/member/index');
            }
        }
    }
    public function edit()
    {
        //获取管理员id
        $id = $this->request->has('id') ? $this->request->param('id', 0, 'intval') : 0;
        $model = new user();
        $catedb=new Membercate();
        if($id > 0) {
            //是修改操作
            if($this->request->isPost()) {
                //是提交操作
                $post = $this->request->post();
                //验证  唯一规则： 表名，字段名，排除主键值，主键名
                $validate = new \think\Validate([
                    ['username', 'require|alphaDash', '管理员名称不能为空|用户名格式只能是字母、数组、——或_'],
                    ['admin_cate_id', 'require', '请选择管理员分组'],
                ]);
                //验证部分数据合法性
                if (!$validate->check($post)) {
                    $this->error('提交失败：' . $validate->getError());
                }
                //验证用户名是否存在
                $name = $model->where(['username'=>$post['username'],'id'=>['neq',$post['id']]])->select();
                if(!empty($name)) {
                    $this->error('提交失败：该用户名已被注册');
                }
                //验证昵称是否存在
                $nickname = $model->where(['nick'=>$post['nick'],'id'=>['neq',$post['id']]])->select();
                if(!empty($nickname)) {
                    $this->error('提交失败：该昵称已被占用');
                }
                if(false == $model->allowField(true)->save($post,['id'=>$id])) {
                    $this->error('修改失败');
                } else {

                    $this->success('修改管理员信息成功','admin/member/index');
                }
            } else {
                //非提交操作
                $info['admin'] = $model->where('id',$id)->find();
                $info['admin_cate'] = $catedb->select();
                $this->assign('info',$info);
                return $this->fetch();
            }
        } else {
            //是新增操作
            if($this->request->isPost()) {
                //是提交操作
                $post = $this->request->post();
                //验证  唯一规则： 表名，字段名，排除主键值，主键名
                $validate = new \think\Validate([
                    ['username', 'require|alphaDash', '用户名不能为空|用户名格式只能是字母、数组、——或_'],
                    ['password', 'require|confirm', '密码不能为空|两次密码不一致'],
                    ['password_confirm', 'require', '重复密码不能为空'],
                    ['admin_cate_id', 'require', '请选择管理员分组'],
                ]);
                //验证部分数据合法性
                if (!$validate->check($post)) {
                    $this->error('提交失败：' . $validate->getError());
                }
                //验证用户名是否存在
                $name = $model->where('username',$post['username'])->select();
                if(!empty($name)) {
                     $this->error('提交失败：该用户名已被注册');
                }
                //验证昵称是否存在
                $nickname = $model->where('nick',$post['nick'])->select();
                if(!empty($nickname)) {
                     $this->error('提交失败：该昵称已被占用');
                }
                //密码处理
                $post['password'] = md5($post['password']);
                if(false == $model->allowField(true)->save($post)) {
                   $this->error('添加管理员失败');
                } else {

                    $this->success('添加管理员成功','admin/member/index');
                }
            } else {
                //非提交操作
                $info['admin_cate'] = $catedb->select();
                $this->assign('info',$info);
                return $this->fetch();
            }
        }
    }

}